from pyquery import PyQuery as pq

"""
pyquery 提供了一系列方法来对节点进行动态修改，比如为某个节点添加一个 class，移除某个节点等
"""

html = '''
<div class="wrap">
    <div id="container">
        <ul class="list">
             <li class="item-0">first item</li>
             <li class="item-1"><a href="link2.html">second item</a></li>
             <li class="item-0 active"><a href="link3.html"><span class="bold">third item</span></a></li>
             <li class="item-1 active"><a href="link4.html">fourth item</a></li>
             <li class="item-0"><a href="link5.html">fifth item</a></li>
         </ul>
     </div>
 </div>
'''


"""
 示例1 addClass 和 removeClass 方法可以动态改变节点的 class 属性
"""

doc = pq(html)
li = doc('.item-0.active')
print(li)
li.removeClass('active')
print(li)
li.addClass('active')
print(li)

print('**********************************************')
"""
 示例2 attr 方法对属性进行操作   text 和 html 方法来改变节点内部的内容
"""

html = '''
<ul class="list">
     <li class="item-0 active"><a href="link3.html"><span class="bold">third item</span></a></li>
</ul>
'''
doc = pq(html)
li = doc('.item-0.active')
print(li)
li.attr('name', 'link')
print(li)
li.text('changed item')
print(li)
li.html('<span>changed item</span>')
print(li)


print('************************************************')
"""
 示例 3 remove 方法就是移除节点
 有时会为信息的提取带来非常大的便利
"""
html = '''
<div class="wrap">
    Hello, World
    <p>This is a paragraph.</p>
 </div>
'''
doc = pq(html)
wrap = doc('.wrap')
wrap.find('p').remove() # 去除P节点，避免提取的文本包含P节点的
print(wrap.text()) # Hello, World



"""
  还有很多节点操作的方法，比如 append()、empty() 和 prepend() 等方法
"""